#pragma once
#include "ASN1Type.h"

namespace AppliedCryptography
{
	namespace AC = AppliedCryptography;

	class ASN1Encodable : public ASN1Type
	{
	protected:
		ASN1Encodable();
		explicit ASN1Encodable(ASN1Type& type);
		ASN1Encodable(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number);

	public:
		virtual std::vector<byte> encode() const;

	public:
		virtual std::vector<byte> getLengthBits() const;
		virtual std::vector<byte> getContentBits() const = 0;
	};
}; // namespace AppliedCryptography
